MySQL |
您所在的位置:网站首页 › provided that的that可以省略么 › MySQL |
SQL通用语法
1). SQL语句可以单行或多行书写,以分号结尾。 2). SQL语句可以使用空格/缩进来增强语句的可读性。 3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。 4). 注释: 单行注释:-- 注释内容 或 # 注释内容 多行注释:/* 注释内容 */ SQL分类![]() DDL 数据定义语言,用来定义数据库对象(数据库,表,字段) DDL-数据库操作1)查询所有数据库 show datebases; 2)查询当前数据库 select databases; 3)创建数据库 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ]; eg:1.创建一个itcast数据库, 使用数据库默认的字符集。 create database itcast; 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。 可以通过if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不 创建。 create database if not extists itcast; eg: 2.创建一个itheima数据库,并且指定字符集 create database itheima default charset utf8mb4; 4)删除数据库 drop database [ if exists ] 数据库名 ; 如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再 执行删除,否则不执行删除。 5)切换数据库 use 数据库名 ; 我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的 比如,切换到itcast数据,执行如下SQL: use itcast; 表操作2.1 表操作-查询创建 查询当前数据库所有表 show tables; 查看指定表结构 desc 表名; 查询指定表的建表语句 show create table 表名; 创建表结构 ![]() 注意: [...] 内为可选参数,最后一个字段后面没有逗号 2.2 表操作-数据类型 主要有:数值类型,字符串类型,日期时间类型。 数值类型 ![]() 字符串类型 ![]() char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。 日期时间类型 ![]() 2.3 表操作-eg 设计一张员工信息表,要求如下: 1. 编号(纯数字) 2. 员工工号 (字符串类型,长度不超过10位) 3. 员工姓名(字符串类型,长度不超过10位) 4. 性别(男/女,存储一个汉字) 5. 年龄(正常人年龄,不可能存储负数) 6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符) 7. 入职时间(取值年月日即可) 对应的建表语句如下: ![]() 2.4 表操作-修改 添加字段 ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ]; 修改数据类型 ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度); 修改字段名和字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ]; 删除字段 ALTER TABLE 表名 DROP 字段名; 修改表名 ALTER TABLE 表名 RENAME TO 新表名; 2.5 表操作-删除 删除表 DROP TABLE [ IF EXISTS ] 表名; (可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不 加该参数项,删除一张不存在的表,执行将会报错)。) 删除指定表, 并重新创建表 TRUNCATE TABLE 表名; 注意: 在删除表的时候,表中的全部数据也都会被删除。 DMLDML(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 添加数据(INSERT) 修改数据(UPDATE) 删除数据(DELETE) 3.1 添加数据1)给指定字段添加数据 INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); 2)给全部字段添加数据 INSERT INTO 表名 VALUES (值1, 值2, ...); 3)批量添加数据 INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值 1, 值2, ...) ; INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ; 注意: 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。 字符串和日期型数据应该包含在引号中。 插入的数据大小,应该在字段的规定范围内。 3.2修改数据UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ; 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。 3.3删除数据DELETE FROM 表名 [ WHERE 条件 ] ; 注意事项: DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。 DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。 当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击Execute即可。 DQLDQL(数据查询语言),用来查询数据库中表的记录。 基本语法: ![]() 分为以下几个部分: 基本查询(不带任何条件) 条件查询(WHERE) 聚合函数(count、max、min、avg、sum) 分组查询(group by) 排序查询(order by) 分页查询(limit) 基本查询(不带任何条件)1.1 查询多个字段 SELECT 字段1, 字段2, 字段3 ... FROM 表名 ; SELECT * FROM 表名 ; 注意:*代表查询所有字段,开发尽量少用。 1.2 字段设置别名 SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名; SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名; 1.3 去除重复记录 SELECT DISTINCT 字段列表 FROM 表名; 条件查询(where)SELECT 字段列表 FROM 表名 WHERE 条件列表 ; ![]() ![]() 将一列数据作为一个整体,进行纵向计算 。 SELECT 聚合函数(字段列表) FROM 表名 ; ![]() 注意 : NULL值是不参与所有聚合函数运算的。 分组查询(group by)SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ]; where与having区别: 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。 判断条件不同:where不能对聚合函数进行判断,而having可以。 注意事项: 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。 执行顺序: where > 聚合函数 > having 。 支持多字段分组, 具体语法为 : group by columnA,columnB 排序查询(order by)SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ; 排序方式:ASC(升序默认) DESC(降序) 注意事项: 如果是升序, 可以不指定排序方式ASC ; 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ; 分页查询(limit)SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ; 注意事项: 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。 执行顺序![]() DCL(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 1.管理用户1.1 查询用户 select * from mysql.user; ![]() 其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以 远程访问的。 User代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯一标识一 个用户。 1.2 查询用户 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 1.3修改用户密码 ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ; 1.4 删除用户 DROP USER '用户名'@'主机名' ; 注意事项: 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。 主机名可以使用 % 通配 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用 2.权限控制![]() 官方文档:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html 2.1 查询权限 SHOW GRANTS FOR '用户名'@'主机名' ; 2.2授予权限 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; 2.3 撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; 注意事项: 多个权限之间,使用逗号分隔。 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |